package com.fxp.project.jiuselu.web.models.coupon.service;

import com.fxp.project.jiuselu.web.models.coupon.entity.JslUserCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fxp.project.jiuselu.web.models.coupon.qo.UserReceiveCouponQo;
import com.fxp.project.jiuselu.web.models.coupon.vo.JslUserCouponVo;
import com.fxp.project.jiuselu.web.models.coupon.vo.RegistCouponVo;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 用户优惠券记录表 服务类
 * </p>
 *
 * @author Jason.Wang
 * @since 2021-11-11
 */
public interface IJslUserCouponService extends IService<JslUserCoupon> {

    /**
     * selectJslUserCouponVoForIndexShow: 查询当前用户的优惠券<br/>
     *
     * @param userId
     * @return
     * @author Kai.Wang
     * @date 2021/11/11 10:42
     */
    List<JslUserCouponVo> selectJslUserCouponVoForIndexShow(Long userId);

    void selectJslUserCouponByOrderId(BigDecimal couponPrice,String orderId);

    /**
     * selectJslUserCouponVoList: 查询当前用户的优惠券<br/>
     *
     * @param userId
     * @return
     * @author Kai.Wang
     * @date 2021/11/11 15:21
     */
    List<JslUserCouponVo> selectJslUserCouponVoList(Long userId,LocalDateTime expireTime);

    /**
     * @Description 用户领取优惠券
     * @Date 0:18 2022/1/26
     * @Param [userReceiveCouponQo]
     * @return void
     * @Author M_
     **/
    void receiveCoupon(UserReceiveCouponQo userReceiveCouponQo,Long userId) ;

    /**
     * @Description 注册即送的优惠券
     * @Date 20:32 2022/1/27
     * @Param [userId]
     * @return java.util.List<com.fxp.project.jiuselu.web.models.coupon.vo.RegistCouponVo>
     * @Author M_
     **/
    List<RegistCouponVo> receiveRegistCoupon(Long userId) ;

    /**
     * @Description 注册有优惠券
     * @Date 21:35 2022/2/22
     * @Param [userId]
     * @return java.util.List<com.fxp.project.jiuselu.web.models.coupon.vo.RegistCouponVo>
     * @Author M_
     **/
    List<RegistCouponVo> registCoupon(LocalDateTime endTime) ;

    int updateCouponStatus(String orderId);
}
